package com.iaiai.tm.activity;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import com.iaiai.tm.activity.ApplicationListView.Adapter;

import android.content.Context;
import android.graphics.Color;
import android.os.Handler;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;

public class ServiceListView extends ListView {
	
	private Context context;
	
	private List<String> list;
	
	private Adapter adapter;

	public ServiceListView(Context context, AttributeSet attrs) {
		super(context, attrs);
		
		this.context = context;
		
		init();
	}
	
	public ServiceListView(Context context) {
		super(context);
		
		this.context = context;
		
		init();
	}
	
	private void init(){
		list = getData();
		
		adapter = new Adapter();
		this.setAdapter(adapter);
	}
	
	/**
	 * 返回所有运行的程序
	 * 
	 * @return
	 */
	private List<String> getData() {
		List<String> l = new ArrayList<String>();
		readData();
		return l;
	}
	
	/**
	 * 读取数据<br/>
	 * 
	 * phone:[com.android.internal.telephony.ITelephony]--手机管理<br/>
	 * iphonesubinfo:[com.android.internal.telephony.IPhoneSubInfo]--<br/>
	 * simphonebook:[com.android.internal.telephony.IIccPhoneBook]--<br/>
	 * isms:[com.android.internal.telephony.ISms]--<br/>
	 * diskstats:[]--<br/>
	 * appwidget:[com.android.internal.appwidget.IAppWidgetService]--<br/>
	 * backup:[android.app.backup.IBackupManager]--<br/>
	 * uimode:[android.app.IUiModeManager]--<br/>
	 * audio:[android.media.IAudioService]--<br/>
	 * wallpaper:[android.app.IWallpaperManager]--<br/>
	 * dropbox:[com.android.internal.os.IDropBoxManagerService]--<br/>
	 * search:[android.app.ISearchManager]--<br/>
	 * location:[android.location.ILocationManager]--<br/>
	 * devicestoragemonitor:[]--<br/>
	 * notification:[android.app.INotificationManager]--<br/>
	 * mount:[android:os.storage.IMountService]--<br/>
	 * accessibility:[android.view.accessibility.IAccessibilityManager]--<br/>
	 * throttle:[android.net.IThrottleManager]--<br/>
	 * connectivity:[android.net.IConnectivityManager]--<br/>
	 * wifi:[android.net.wifi.IWifiManager]--<br/>
	 * network_management:[android.os.INetworkManagementService]--<br/>
	 * netstat:[android.os.INetStatService]--<br/>
	 * input_method:[com.android.internal.view.IInputMethodManager]--<br/>
	 * clipboard:[android.text.IClipboard]--<br/>
	 * statusbar:[android.app.IStatusBar]--<br/>
	 * device_policy:[android.app.admin.IDevicePolicyManager]--<br/>
	 * window:[android.view.IWindowManager]--<br/>
	 * sensor:[android.hardware.ISensorService]--<br/>
	 * alarm:[android.app.IAlarmManager]--<br/>
	 * vibrator:[android.os.IVibratorService]--<br/>
	 * hardware:[android.os.IHardwareService]--<br/>
	 * battery:[]--<br/>
	 * content:[android.content.IContentService]--<br/>
	 * account:[android.accounts.IAccountManager]--<br/>
	 * permission:[android.os.IPermissionController]--<br/>
	 * cpuinfo:[]--<br/>
	 * meminfo:[]--<br/>
	 * activity:[android.app.IActivityManager]--<br/>
	 * package:[android.content.pm.IPackageManager]--<br/>
	 * telephony.registry:[com.android.internal.telphony.ITelephonyRegistry]--<br/>
	 * usagestats:[com.android.internal.app.IUsageStats]--<br/>
	 * batteryinfo:[com.android.internal.app.IBatteryStats]--<br/>
	 * power:[android.os.IPowerManager]--<br/>
	 * entropy:[]--<br/>
	 * SurfaceFlinger:[android.ui.ISurfaceComposer]--<br/>
	 * media.audio_policy:[android.media.IAudioPolicyService]--<br/>
	 * media.camera:[android.hardware.ICameraServlce]--<br/>
	 * media.player:[android.media.IMediaPlayerService]--<br/>
	 * media.audio_flinger:[android.media.IAudioFlinger]--<br/>
	 * 
	 * 
	 * @return
	 */
	public void readData(){
		final Handler handler = new Handler();
		new Thread() {
			public void run() {
				List<String> data = null;
				try {
					data = CMDExecute.run1("/system/bin/service list");
				} catch (IOException e) {
					e.printStackTrace();
				}
				final List<String> d = data;
				handler.post(new Runnable() {
					public void run() {
						for(int i=0;i<d.size();i++){
							if(i==0)continue;
							String str = d.get(i);
							if((int)str.substring(1,2).toCharArray()[0]==9){
								str = str.substring(2);
							}else if((int)str.substring(2,3).toCharArray()[0]==9){
								str = str.substring(3);
							}else if((int)str.substring(3,4).toCharArray()[0]==9){
								str = str.substring(4);
							}
							str = str.substring(0,str.indexOf(":"));
							if(str.trim().toLowerCase().equals("phone")){
								list.add("[手机号服务]"+str);
							}else if(str.trim().toLowerCase().equals("iphonesubinfo")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("simphonebook")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("isms")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("diskstats")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("appwidget")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("backup")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("uimode")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("audio")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("wallpaper")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("dropbox")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("search")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("location")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("devicestoragemonitor")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("notification")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("mount")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("accessibility")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("throttle")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("connectivity")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("wifi")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("network_management")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("netstat")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("input_method")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("clipboard")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("statusbar")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("device_policy")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("window")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("sensor")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("alarm")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("vibrator")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("hardware")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("battery")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("content")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("account")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("permission")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("cpuinfo")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("meminfo")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("activity")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("package")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("telephony.registry")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("usagestats")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("batteryinfo")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("power")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("entropy")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("surfaceflinger")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("media.audio_policy")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("media.camera")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("media.player")){
//								list.add("[]"+str);
								list.add(str);
							}else if(str.trim().toLowerCase().equals("media.audio_flinger")){
//								list.add("[]"+str);
								list.add(str);
							}else{
								list.add(str);
							}
						}
						adapter.notifyDataSetChanged();
					}
				});
			}
		}.start();
	}
	
	class Adapter extends BaseAdapter {  

	    public int getCount() {  
	        return list.size();  
	    }  
	  
	    public Object getItem(int position) {  
	        return list.get(position);  
	    }  
	  
	    public long getItemId(int position) {  
	        return position;  
	    }  
	  
	    public View getView(final int position, View convertView, ViewGroup parent) { 
	    	LinearLayout layout = new LinearLayout(context);
	    	layout.setPadding(5, 0, 0, 0);
	    	TextView textView = new TextView(context);
	    	textView.setTextColor(Color.BLACK);
	    	textView.setText(list.get(position));
	    	layout.addView(textView);
	        return layout;
	    }
	}

}
